package com.changgou.file.controller;

import com.changgou.entity.Result;
import com.changgou.entity.StatusCode;
import com.changgou.file.util.FastDFSClient;
import com.changgou.file.util.FastDFSFile;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

/**
 * @author : 小翘臂
 * @version : 1.0
 * @date : Created in 2020/12/10
 * @description :
 */
@RestController
@RequestMapping("file")
public class FileController {
    private Logger logger = LoggerFactory.getLogger(getClass());

    @PostMapping("/upload")
    public Result upload(@RequestParam("file") MultipartFile file) {
        String fileName = null;
        try {
            fileName = file.getOriginalFilename();
            String extName = fileName.substring(fileName.lastIndexOf("."));
            byte[] fileContent = file.getBytes();

            FastDFSFile fastDFSFile = new FastDFSFile(fileName, fileContent, extName);
            String[] uploadResult = FastDFSClient.upload(fastDFSFile);
            if (uploadResult != null && uploadResult.length == 2) {
                String groupName = uploadResult[0];
                String remoteFilePath = uploadResult[1];
                String url = FastDFSClient.getTrackerUrl() + groupName + "/" + remoteFilePath;
                //todo 将路径存储到数据库表中

                logger.info("上传成功,url:{}", url);
                return new Result(true, StatusCode.OK, "上传成功", url);
            } else {
                logger.info("上传失败");
                return new Result(false, StatusCode.ERROR, "上传失败");
            }
        } catch (IOException e) {
            logger.info("上传失败fileName:{}", fileName);
            e.printStackTrace();
            return new Result(false, StatusCode.ERROR, "上传失败");

        }

    }
}
